﻿// Пример наследования классов
// Добавлено сокрытие переменных и методов с помощь base и new

using System;

class EnhiritanceDemo
{
    public static void _Main()
    {
        Triangle t1 = new Triangle(12, 67, "Разнобедренный");
        t1.ShowValues();
        Console.WriteLine("Площадь равна {0}", t1.Square);
        Console.WriteLine("Стиль треугольника - {0}", t1.Style);

        // Сокрытие методов
        t1.ShowAngle();
        t1.ShowBaseAngle();

        // Третий уровень наследования
        ColorTriangle ct1 = new ColorTriangle(33, 33, "Ранвобедренный", "Зеленый");
        ct1.ShowColor();
        Console.WriteLine("Площадь цветного треугольника равна: {0}", ct1.Square);

        Console.ReadLine();
    }
}

class Shape2D
{
    protected int width;
    protected int height;

    protected int angle = 45;

    public Shape2D(int w, int h)
    {
        width = w;
        height = h;
    }
    public int Width
    {
        get { return width; }
        set { width = value; }
    }

    public int Height
    {
        get { return height; }
        set { height = value; }
    }

    public void ShowValues()
    {
        Console.WriteLine("Ширина равна {0}, высота равна {1} ", width, height);
    }

    public void ShowAngle()
    {
        Console.WriteLine("Базовый вывод угла: {0}", angle);
    }
}

class Triangle : Shape2D
{
    int square;
    string style;
    new int angle = 90;

    public Triangle(int w, int h, string s)
        : base(w, h)
    {
        style = s;
    }

    public int Square
    {
        get
        {
            return width * height;
        }
    }

    public string Style
    {
        get { return style; }
        set { style = value; }
    }

    public void ShowAngle()
    {
        Console.WriteLine("Наследственный вывод угла: {0}", angle);
    }
    public void ShowBaseAngle()
    {
        base.ShowAngle();
    }
}

// Третий уровень наследования
class ColorTriangle : Triangle
{
    string color;

    public ColorTriangle(int w, int h, string s, string c)
        : base(w, h, s)
    {
        color = c;
    }

    public void ShowColor()
    {
        Console.WriteLine("Цвет треугольника: {0}", color);
    }
}